package com.cineplanet.dew.dao;

import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.cineplanet.dew.exception.DAOExcepcion;
import com.cineplanet.dew.modelo.Cine;
import com.cineplanet.dew.modelo.Comentario;

public class ComentarioDAOImpl extends HibernateDaoSupport implements ComentarioDAO {

	private DataSource dataSource;

	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}
	
	@Override
	public List<Comentario> listar() throws DAOExcepcion {
		List<Comentario> arreglo = new ArrayList<Comentario>();
		try {
			arreglo = getHibernateTemplate().find("from Comentario");
		} catch (Exception e) {

			throw new DAOExcepcion(e.getMessage());
		}
		return arreglo;
	}

	@Override
	public List<Comentario> listarUltimos(int cantidad) throws DAOExcepcion {
		List<Comentario> arreglo = new ArrayList<Comentario>();
		try {
			getHibernateTemplate().setFetchSize(cantidad);
			arreglo = getHibernateTemplate().find("from Comentario order by idComentario desc").subList(0, cantidad);
		} catch (Exception e) {

			throw new DAOExcepcion(e.getMessage());
		}
		return arreglo;
	}

	@Override
	public Comentario insertar(Comentario comentario) throws DAOExcepcion {
		try {
			getHibernateTemplate().save(comentario);
		    getHibernateTemplate().flush();
		} catch (Exception e) {

			throw new DAOExcepcion(e.getMessage());
		}
		return comentario;
	}

	@Override
	public Comentario update(Comentario comentario) throws DAOExcepcion {
		try {
			getHibernateTemplate().update(comentario);
		    getHibernateTemplate().flush();
		} catch (Exception e) {

			throw new DAOExcepcion(e.getMessage());
		}
		return comentario;
	}

}
